#ifndef MANAGER_H
#define MANAGER_H

#include <QObject>
#include <QLibrary>
#include <QDebug>
typedef enum tagXXX{
    LEVEL1,LEVEL2,LEVEL3
} ENUM_LEVEL;
class Manager : public QObject
{
    Q_OBJECT
public:
    ~Manager();
    Manager(const Manager&) = delete;

    static Manager& GetInstance(){
        static Manager instance;
        return instance;
    }
    /**************************************************************
    *  @brief : 级别权限添加
    *  @param : Level 添加哪个级别的 权限
    *  @param : auth  具体权限别名
    *  @return : BOOL
    *  @note : DURR 项目用不到
    ***************************************************************/
    bool AddAuthority(ENUM_LEVEL Level,QString auth);

    /**************************************************************
    *  @brief : 级别权限删除
    *  @param : Level 删除哪个级别的 权限
    *  @param : auth  具体权限别名
    *  @return : BOOL
    *  @note : DURR 项目用不到
    ***************************************************************/
    bool DelAuthority(ENUM_LEVEL Level,QString auth);

    /**************************************************************
    *  @brief : 设置检查用户
    *  @param : user 用户名称
    *  @return : void
    *  @note :配合CheckSetting(QString ObjName)使用
    ***************************************************************/
    void SetCheckUse(QString user);

    /**************************************************************
    *  @brief : 指定用户与权限检查
    *  @param : ObjName 权限别名
    *  @param : user 用户名称
    *  @return : true用户有此权限，false用户没有此权限
    *  @note :
    ***************************************************************/
    bool CheckSetting(QString ObjName,QString user);

    /**************************************************************
    *  @brief : 用户与权限检查
    *  @param : ObjName 权限别名
    *  @return : true设置的用户有此权限，false设置的用户没有此权限
    *  @note : 需要提前设置用户。
    ***************************************************************/
    bool CheckSetting(QString ObjName);

    /**************************************************************
    *  @brief : 用户与密码检查
    *  @param : user 用户名称
    *  @param : pwd 用户密码
    *  @return : true有用户和密码，false没有用户和密码
    *  @note :
    ***************************************************************/
    bool CheckUserPwd(QString user,QString pwd);

    /**************************************************************
    *  @brief : 用户检查
    *  @param : user 用户名称
    *  @return : true有用户，false没有用户
    *  @note :
    ***************************************************************/
    bool CheckUser(QString user);

    /**************************************************************
    *  @brief : 添加用户与密码
    *  @param : sLevel 用户等级
    *  @param : user 用户名称
    *  @param : pwd 用户密码
    *  @return : true添加成功，false添加失败
    *  @note :
    ***************************************************************/
    bool AddUser(ENUM_LEVEL sLevel,QString user,QString pwd);

    /**************************************************************
    *  @brief : 删除用户
    *  @param : user 用户名称
    *  @return : true删除成功，false删除失败
    *  @note :
    ***************************************************************/
    bool DelUser(QString user);

    /**************************************************************
    *  @brief : 获取用户
    *  @param : sLevel 用户等级
    *  @param : user 用户名称
    *  @return : true成功，false失败
    *  @note :
    ***************************************************************/
    bool GetUser(ENUM_LEVEL sLevel,QString &user);

private:
    explicit Manager(QObject *parent = nullptr);

    QLibrary _mylib;
    QString _user;
    bool _libOK;
signals:

};

#endif // MANAGER_H
